﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Text;

namespace projetoFinal
{
    public class operaPrestadorServico
    {
        public static List<prestadorServico> listar(string field, string value, int crit)
        {
            List<prestadorServico> listPrestador = new List<prestadorServico>();
            string strSQL = string.Empty;

            if (field.Equals(""))
            {
                strSQL = " SELECT * FROM cadastro WHERE tipo = 2 ";
            }
            else
            {
                strSQL = DAOHelper.sqlQueryBuilder("cadastro", field, value, crit);
            }

            using (IDataReader dr = DAOHelper.executeQuery(strSQL))
            {
                while (dr.Read())
                {
                    prestadorServico objPrestador = new prestadorServico(Int64.Parse(dr["codCadastro"].ToString()), dr["nome"].ToString(), dr["matricula"].ToString(), new tipoPlano(Int64.Parse(dr["codTipoPlano"].ToString()), ""),
                                                              (status)Enum.Parse(typeof(status), dr["status"].ToString()), (situacaoFinanceira)Enum.Parse(typeof(situacaoFinanceira), dr["sitFinanceiro"].ToString()));
                    objPrestador.Cnpj = dr["cnpj"].ToString();
                    objPrestador.RazaoSocial = dr["razaoSocial"].ToString();
                    objPrestador.Cep = dr["cep"].ToString();
                    objPrestador.Endereco = dr["endereco"].ToString();
                    objPrestador.Complemento = dr["complemento"].ToString();
                    objPrestador.Numero = dr["numero"].ToString();
                    objPrestador.Bairro = dr["bairro"].ToString();
                    objPrestador.Cidade = dr["cidade"].ToString();
                    objPrestador.Uf = dr["uf"].ToString();
                    objPrestador.Fone = dr["fone"].ToString();
                    objPrestador.ValorPlano = double.Parse(dr["valorPlano"].ToString());

                    listPrestador.Add(objPrestador);
                }
            }
            return listPrestador;
        }

        public static int incluir(prestadorServico objPrestador)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" INSERT INTO ");
            strSQL.Append(" cadastro ");
            strSQL.Append(" ( ");
            strSQL.Append("     nome, matricula, codTipoPlano, status, sitFinanceiro, cnpj, razaoSocial,");
            strSQL.Append("     cep, endereco, complemento, numero, bairro, cidade, uf, fone, valorPlano, tipo ");
            strSQL.Append(" ) ");
            strSQL.Append(" VALUES ");
            strSQL.Append(" ( ");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Nome + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Matricula + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.TipoPlano.CodTipoPlano + "'");
            strSQL.AppendFormat("{0}, ", "'" + (Int32)objPrestador.Status + "'");
            strSQL.AppendFormat("{0}, ", "'" + (Int32)objPrestador.SitFinanceiro + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Cnpj + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.RazaoSocial + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Cep + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Endereco + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Complemento + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Numero + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Bairro + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Cidade + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Uf + "'");
            strSQL.AppendFormat("{0}, ", "'" + objPrestador.Fone + "'");
            strSQL.AppendFormat("{0}, ", objPrestador.ValorPlano.ToString().Replace(".", "").Replace(",", "."));
            strSQL.AppendFormat("{0} ", "'" + objPrestador.Tipo + "'");
            strSQL.Append(" );");
            return DAOHelper.executeDML(strSQL.ToString());
        }

        public static int apagar(Int64 codPrestador)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append(" DELETE FROM cadastro ");
            strSQL.Append(" WHERE ");
            strSQL.Append(" tipo = ");
            strSQL.AppendFormat("{0} ", 2);
            strSQL.Append(" AND codCadastro = ");
            strSQL.AppendFormat("{0}; ", codPrestador);
            return DAOHelper.executeDML(strSQL.ToString());
        }

        public static int editar(prestadorServico objPrestador)
        {
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append("      UPDATE cadastro ");
            strSQL.Append("        SET ");
            strSQL.AppendFormat("   nome = {0}, ", "'" + objPrestador.Nome + "'");
            strSQL.AppendFormat("   matricula = {0}, ", "'" + objPrestador.Matricula + "'");
            strSQL.AppendFormat("   codTipoPlano = {0}, ", "'" + objPrestador.TipoPlano.CodTipoPlano + "'");
            strSQL.AppendFormat("   status = {0}, ", "'" + (Int32)objPrestador.Status + "'");
            strSQL.AppendFormat("   sitFinanceiro = {0}, ", "'" + (Int32)objPrestador.SitFinanceiro + "'");
            strSQL.AppendFormat("   cnpj = {0}, ", "'" + objPrestador.Cnpj + "'");
            strSQL.AppendFormat("   razaoSocial = {0}, ", "'" + objPrestador.RazaoSocial + "'");
            strSQL.AppendFormat("   cep = {0}, ", "'" + objPrestador.Cep + "'");
            strSQL.AppendFormat("   endereco = {0}, ", "'" + objPrestador.Endereco + "'");
            strSQL.AppendFormat("   complemento = {0}, ", "'" + objPrestador.Complemento + "'");
            strSQL.AppendFormat("   numero = {0}, ", "'" + objPrestador.Numero + "'");
            strSQL.AppendFormat("   bairro = {0}, ", "'" + objPrestador.Bairro + "'");
            strSQL.AppendFormat("   cidade = {0}, ", "'" + objPrestador.Cidade + "'");
            strSQL.AppendFormat("   uf = {0}, ", "'" + objPrestador.Uf + "'");
            strSQL.AppendFormat("   fone = {0}, ", "'" + objPrestador.Fone + "'");
            strSQL.AppendFormat("   fone = {0} ", objPrestador.ValorPlano.ToString().Replace(".", "").Replace(",", "."));
            strSQL.Append("       WHERE ");
            strSQL.AppendFormat(" tipo = {0} AND ", objPrestador.Tipo);
            strSQL.AppendFormat(" codCadastro = {0}; ", objPrestador.CodCadastro);
            return DAOHelper.executeDML(strSQL.ToString());
        }

        public static prestadorServico buscar(Int64 codPrestador)
        {
            prestadorServico objPrestador;
            List<prestadorServico> listaPrestador = listar(" tipo = 2 AND codCadastro ", codPrestador.ToString(), 1);
            if (listaPrestador.Count == 1)
            {
                objPrestador = listaPrestador[0];
            }
            else
            {
                objPrestador = null;
            }
            return objPrestador;
        }
    }
}
